import 'package:get/get.dart';
import '../services/index.dart';
import '../models/index.dart';

/// 专家信息访问Mixin
/// 
/// 🎯 企业级专家信息访问统一入口
/// 
/// 职责：
/// - 为Controller提供统一的专家信息访问接口
/// - 避免Controller直接访问UserService的复杂逻辑
/// - 统一命名规范和访问模式
/// - 减少重复代码，保持架构清晰
/// 
/// 使用方式：
/// ```dart
/// class MyController extends GetxController with UserProfileMixin {
///   void someMethod() {
///     if (isLoggedIn) {
///       print('专家ID: $expertId');
///       print('专家姓名: $expertName');
///     }
///   }
/// }
/// ```
mixin UserProfileMixin {
  // 获取UserService实例
  UserService get _userService => Get.find<UserService>();

  // ==================== 核心状态访问 ====================
  
  /// 获取当前专家信息模型
  ExpertInfo? get currentExpertInfo => _userService.currentExpertInfo;
  
  /// 检查是否已登录
  bool get isLoggedIn => _userService.isLoggedIn;
  
  // ==================== 专家基本信息访问器 ====================
  
  /// 获取专家ID
  String get expertId => _userService.currentExpertInfo?.id?.toString() ?? '';
  
  /// 获取专家姓名
  String get expertName => _userService.currentExpertInfo?.name ?? '';
  
  /// 获取专家显示名称（就是姓名）
  String get expertDisplayName => _userService.currentExpertInfo?.name ?? '评审专家';
  
  /// 获取专家邮箱
  String get expertEmail => _userService.currentExpertInfo?.email ?? '未设置';
  
  /// 获取专家手机号
  String get expertPhone => _userService.currentExpertInfo?.phone ?? '未设置';
  
  /// 获取专家所属机构
  String get expertCorpName => _userService.currentExpertInfo?.corpName ?? '未设置';
  
  /// 获取专家职务
  String get expertOfficialCapacity => _userService.currentExpertInfo?.officialCapacity ?? '未设置';
  
  // ==================== 专家权限访问器（简化版）====================
  
  /// 检查是否有指定权限（调用UserService的业务逻辑）
  bool hasPermission(String permission) => _userService.hasPermission(permission);
  
  /// 检查是否有指定角色（调用UserService的业务逻辑）
  bool hasRole(String role) => _userService.hasRole(role);
}
